package Model;

import Control.VendaControl;
import java.util.ArrayList;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.data.category.DefaultCategoryDataset;

public class GeradorGraficosVendasProduto {
    
    private ArrayList<Produto> produtos;
    
    public GeradorGraficosVendasProduto(){
        produtos = new ArrayList<>();
        for(Venda vn : new VendaControl().getVenda())
            for(Produto pd : vn.getProdutos())
                if(!nomeIgual(pd.getNome()))
                    produtos.add(pd);
                else{
                    int qtd = 0;
                    if((qtd=getQtd(pd.getNome())) != -1){
                        pd.setQtd(qtd);
                        produtos.set(getIndex(pd.getNome()), pd);
                    }                    
                }
    }
    
    private int getIndex(String nome){
        int i = 0;
        for(Produto pd : produtos){
            if(pd.getNome().equalsIgnoreCase(nome))
                return i;
            i++;
        }            
        return 0;
    }
    
    private int getQtd(String nome){        
        for(Produto pd : produtos){
            if(pd.getNome().equalsIgnoreCase(nome))
                return pd.getQtd();
        }            
        return -1;
    }
    
    private boolean nomeIgual(String nome){
        for(Produto pd : produtos)
            if(pd.getNome().equalsIgnoreCase(nome))
                return true;
        return false;
    }
    
    public JFreeChart geraGrafico(){
        DefaultCategoryDataset ds = new DefaultCategoryDataset();
        for(Produto pd : produtos)
            ds.addValue(pd.getQtd(), "Vendas", pd.getNome());
        JFreeChart graph = ChartFactory.createBarChart("Vendas por Produtos", "Nome produto", "Quantidade", ds);
        return graph;
    }
     
}
